package cn.cvs.dao;

import cn.cvs.pojo.Supplier;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface SupplierMapper {
    /**
     * 统计供货商表总记录数
     */
    int count();
    /**
     * 查询供货商表的全部数据
     */
    List<Supplier> getSupplierList();

    /**
     * 使用collection根据供货商id查询供货商及相关入库记录
     * @param id
     * @return
     */
    List<Supplier> getSupplierAndStorageRecordList(@Param("id") Integer id,@Param("payStatus") Integer payStatus,@Param("goodsName") String goodsName);

    /**
     * 添加供货商
     * @param supplier
     * @return
     */
    int add(Supplier supplier);

    /**
     * 修改供货商
     * @param supplier
     * @return
     */
    int update(Supplier supplier);

    /**
     * 删除供货商
     * @param id
     * @return
     */
    int delete(@Param("id") int id);

    /**
     * 实现以供货商名称（模糊）、供货商编码（模糊）、联系人（模糊）、创建时间作为条件查询供货商表信息，查询条件提供前三任意一个即可，若三者皆无，
     * 则默认以最后一个条件（创建时间：指定年份内）完成查询，使用choose（when、otherwise）标签实现
     * @param supplier
     * @return
     */
    List<Supplier> getSupplierListBySupplier(Supplier supplier);

    /**
     * 以数组为参数实现查询多个供货商关联的入库单列表数据
     * @param id
     * @return
     */
    List<Supplier> getSupplierAndStorageRecordListByArray(Integer[] id);

    /**
     * 以集合为参数实现查询多个供货商关联的入库单列表数据
     * @param id
     * @return
     */
    List<Supplier> getSupplierAndStorageRecordListByList(List<Integer> id);

    /**
     * 以Map对象为参数实现查询多个供货商关联的入库单列表数据
     * @param id
     * @return
     */
    List<Supplier> getSupplierAndStorageRecordListByMap(Map<String,Object> id);

    /**
     * 更新供货商表中某数据的供货商名称、供货商描述及联系电话字段，其余字段的值保持不变
     * @param supplier
     * @return
     */
    int updateSupplierById(Supplier supplier);

    /**
     * 根据数据起始位置pageBegin和页面大小pageSize进行分页查询，并将查询结果以创建时间倒叙排列
     * @param pageBegin
     * @param pageSize
     * @return
     */
    List<Supplier> getListByPageIndex(@Param("pageBegin") Integer pageBegin,@Param("pageSize") Integer pageSize);

}
